﻿  Imports System.Text

Public Class frmEficiencia


    Dim Sep As Char
    Dim Nombre As Double
    Dim dt As New DataTable
    Dim row As DataRow
    Public WithEvents ucPreambulo As New ucPreambulo
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private registro As New registroVO
    Private mensagem As String
    Private erroNivel As Integer = 0
    Private tipoAvaliacao As String
    Private _ehArma As Boolean
    Private _id_natureza As Integer = 36
    Private ucFabricanteArma As New ucFabricante
    Private ucFabricanteMunicao As New ucFabricante
    Private ucCalibre As New ucCalibre
    Private ucCalibreMunicao As New ucCalibreSimples
    Private ehPoleveira As Boolean = Nothing
    Private armaRelatorio As New armaRelatorioVO
    Private drogaRelatorio As New Generic.List(Of drogaRelatorioVO)


    Public Property EHARMA() As Boolean
        Get
            Return _ehArma
        End Get
        Set(value As Boolean)
            _ehArma = value
        End Set
    End Property

    Public Property getUcPreambulo() As ucPreambulo

        Get
            Return ucPreambulo

        End Get

        Set(ByVal value As ucPreambulo)
            ucPreambulo = value

        End Set

    End Property


    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        pnlDados.Controls.Add(ucPreambulo)
        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
            pnlDados.AutoSize = True
            pnlItens.AutoSize = True
            Me.AutoScroll = True

            pnlFabricante.Controls.Add(ucFabricanteArma)
            pnlCalibre.Controls.Add(ucCalibre)
            pnlFabricanteMunicao.Controls.Add(ucFabricanteMunicao)
            pnlMunicaoCalibre.Controls.Add(ucCalibreMunicao)




        End If
    End Sub


    Private Sub frmEficiencia_Load(sender As Object, e As EventArgs) Handles Me.Load

        Try
            Me.WindowState = FormWindowState.Maximized

            ' generica.redimensionaControle(pnlDados)
            ' generica.redimensionaControle(pnlItens)

            ucPreambulo.ucPerito.Enabled = True
            ucPreambulo.selecionaIdTipoPericia = 5
            ucPreambulo.selecionaIdNatureza = _id_natureza

            If _ehArma Then
                ucPreambulo.lblTitulo.Text = "EFICIÊNCIA EM ARMA DE FOGO"
            Else
                ucPreambulo.lblTitulo.Text = "EFICIÊNCIA EM MUNIÇÕES"
            End If
            ucPreambulo.pnlNatureza.Enabled = False

            Me.ControlBox = False
            If generica.gravaBanco Then
                ucPreambulo.btnBuscaLaudo.Enabled = True
            Else
                ucPreambulo.btnBuscaLaudo.Enabled = False
            End If

            ucPreambulo.txtVitima.Text = "A incolumidade pública"

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub TextboxNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)

        Dim nonNumberEntered As Boolean
        nonNumberEntered = True
        If (e.KeyChar >= Convert.ToChar(48) AndAlso e.KeyChar <= Convert.ToChar(57)) OrElse e.KeyChar = Convert.ToChar(8) OrElse e.KeyChar = Convert.ToChar(44) Then
            nonNumberEntered = False
        End If
        If nonNumberEntered = True Then
            e.Handled = True
        Else
            e.Handled = False
        End If
    End Sub
    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------
    Private Sub geraLaudo()

        generica.tempo = Now

        Dim oWordTemp As New WordAppl
        Dim registroBo As New registroBO
        Dim regBO As New registroBO
        
        '-----------------------------------------------------------------------------------------
        ' ABRE O ARQUIVO WORD
        '-----------------------------------------------------------------------------------------

        If registroGlobal.registroPincipal.ID_REGISTRO > 0 Or ucPreambulo.ehNovo Then

            pb.zeraContador()
            pb.stepBarra(10)
            pb.Visible = True
            pb.stepBarra(10)
            '-----------------------------------------------------------------------------------------
            ' GRAVA REGISTRO NA BASE DE DADOS
            '-----------------------------------------------------------------------------------------
            pb.stepBarra(10)
            Try

                If generica.gravaBanco Then

                    '------------------------------------------------------------------------------------
                    ' VERFICA SE É UM NOVO REGISTRO OU SE É UM REGISTRO JÁ ARMAZENADO NA BASE DE DADOS
                    '------------------------------------------------------------------------------------
                    pb.stepBarra(10)

                    Dim provas As New StringBuilder
                    Dim textoProva As String = String.Empty

                    If txtSerial.Text.Equals(String.Empty) Then
                        provas.Append(ucCalibre.DESCARMA).Append(" ").Append(ucFabricanteArma.DESCFABRICANTE).Append(",CALIBRE ").Append(ucCalibre.DESCCALIBRE)
                    Else
                        provas.Append(ucCalibre.DESCARMA).Append(" ").Append(ucFabricanteArma.DESCFABRICANTE).Append(",CALIBRE ").Append(ucCalibre.DESCCALIBRE).Append(", Serial:").Append(txtSerial.Text)
                    End If


                    If rdConsNao.Checked Then
                        provas.Append(" + ").Append(generica.formataNumeroMaterial(txtqtdeMunicao.Value)).Append(" CARTUCHO(S) CALIBRE").Append(ucCalibreMunicao.DESC_CALIBRE).Append(", FABRICANTE ").Append(ucFabricanteMunicao.DESCFABRICANTE)
                
                    End If

                    If provas.ToString.Length > 250 Then
                        textoProva = provas.ToString.Substring(0, 250)
                    Else
                        textoProva = provas.ToString
                    End If


                    pb.stepBarra(10)
                    Dim registroGravado As Integer
                    If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO = False Then

                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "EFICIENCIA DE ARMA DE FOGO" & tipoAvaliacao, ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        registroGravado = regBO.updateRegistro(registroGlobal.registroPincipal, _
                                                               textoProva, ucPreambulo.getIdPeritoSelecionado, _
                                                               nomeDiretorio, ucPreambulo)
                        pb.stepBarra(10)
                        mensagem = (" O laudo n°" & registroGravado & " foi atualizado com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                    Else

                        Dim reg As New registroVO
                        Dim ultimo As Integer = regBO.getUltimoRegistro
                        Dim registroTemporario As Integer = 0
                        If ultimo <> ucPreambulo.getNumeroLaudo Then
                            registroTemporario = ucPreambulo.getNumeroLaudo
                            ucPreambulo.getNumeroLaudo = ultimo
                        End If
                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        

                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "EFICIENCIA DE ARMA DE FOGO" & tipoAvaliacao, ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        reg = generica.populaRegistro(ucPreambulo, generica.retornaNomeArquivoCompleto(nomeDiretorio & ".doc", nomeDiretorio), textoProva)

                        '-------------------------------------------------------------------------------------------
                        ' INSERE INFORMAÇÕES TABELA ARMA_RELATORIO
                        '-------------------------------------------------------------------------------------------
                        Dim regInserido As New registroVO
                        Dim armaRelatorioBo As New armaRelatorioBO
                        Dim id_arma_relatorio As Integer
                        registroGravado = regBO.insereRegistro(reg)
                        regInserido = registroBo.getRegistro(registroGravado, ucPreambulo.getAno)
                        armaRelatorio.ID_REGISTRO = regInserido.ID_REGISTRO
                        armaRelatorio.ID_ARMA = ucCalibre.GETTIPOARMA
                        armaRelatorio.ID_CALIBRE = ucCalibre.GETIDCALIBRE
                        armaRelatorio.EFICIENTE = rdEficienteSim.Checked
                        id_arma_relatorio = armaRelatorioBo.insereArmaRelatorio(armaRelatorio)
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                        If registroTemporario = 0 Then
                            mensagem = (" O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        Else
                            mensagem = (" O laudo n°" & ultimo & " foi inserido com sucesso na base de dados. O laudo não foi gravado com o número inicial " & registroTemporario & " pelo fato de outro usuário ter inserido este número de laudo no banco de dados. Clique no ícone do WORD para visualizar o laudo.")
                        End If
                        pb.stepBarra(10)
                    End If

                    '------------------------------------------------------------------------------------
                    ' INSERE DADOS NA TABELA PONTUACAO
                    '----------
                    Dim pontuacaobo As New pontuacaoBO
                    Dim pontuacao As New pontuacaoVO
                    Dim i As Integer

                    If ucPreambulo.ehNovo Then
                        With pontuacao
                            .USUARIO = New usuarioVO With {.ID_USUARIO = ucPreambulo.getIdPeritoSelecionado}
                            .REGISTRO = New registroVO With {.ID_REGISTRO = registroGlobal.registroPincipal.ID_REGISTRO}
                            .PONTUACAO = registroGlobal.registroPincipal.NATUREZA.PONTOS_ATENDIMENTO
                            .TIPO_OCORRENCIA = "ATENDIMENTO"
                            .DATA_ALTERACAO = Nothing
                        End With

                        i = pontuacaobo.inserePontuacao(pontuacao)

                    Else
                        i = pontuacaobo.upDatePontuacao(ucPreambulo.getIdPeritoSelecionado, registroGlobal.registroPincipal)
                    End If

                Else
                    mensagem = ("O sistema está configurado para não gravar registros na base de dados do sistema de registro eletrônico. Para habilitar, clique em configurações > Configurar aplicação e marque a opção <<SIM>>>. Apenas o laudo de n° " & ucPreambulo.getNumeroLaudo & " será gerado. Clique no ícono do WORD para visualizar o documento.")
                End If
                '-------------------------------------------------------------------------------------
                ' INSERE DADOS ITENS DA TABELA NA BASE LOCAL
                '-------------------------------------------------------------------------------------


            Catch ex As Exception
                generica.encerraProcessosWord()
                habilita(False, False, False, False)
                generica.gravaErro(ex)
                erroNivel = 1
                Exit Sub
            End Try

            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")
                oWordTemp.OpenModelo("eficiencia.dot")
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing
                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(ucPreambulo)
                '------------------------------------------------------------------------------------------------
                ' PREENCHE O CORPO DO DOCUMENTO
                '------------------------------------------------------------------------------------------------
                Dim textoArma As String = String.Empty
                If ucCalibre.DESCARMA.ToLower.Equals("pistola") Or _
                    ucCalibre.DESCARMA.ToLower.Equals("espingarda") Or _
                    ucCalibre.DESCARMA.ToLower.Equals("polveira") Or _
                     ucCalibre.DESCARMA.ToLower.Equals("carabina") Or _
                      ucCalibre.DESCARMA.ToLower.Equals("garrucha") Or _
                           ucCalibre.DESCARMA.ToLower.Equals("polveira") Or _
                    ucCalibre.DESCARMA.ToLower.Equals("revólver") Then

                    Select Case ucCalibre.DESCARMA.ToLower

                        Case "revólver"
                            textoArma = "um " & ucCalibre.DESCARMA.ToLower

                        Case "fuzil"
                            textoArma = "um " & ucCalibre.DESCARMA.ToLower

                        Case "espingarda"
                            textoArma = "uma " & ucCalibre.DESCARMA.ToLower

                        Case "pistola"
                            textoArma = "uma " & ucCalibre.DESCARMA.ToLower

                        Case "garrucha"
                            textoArma = "uma " & ucCalibre.DESCARMA.ToLower

                        Case "carabina"
                            textoArma = "uma " & ucCalibre.DESCARMA.ToLower

                        Case "polveira"
                            textoArma = "uma " & ucCalibre.DESCARMA.ToLower
                            ehPoleveira = True
                        Case Else
                            textoArma = "uma arma "

                    End Select

                    oWord.FindAndReplacement("<<textoPreambulo>>", "Tratava-se de " & textoArma & " conforme as características descritivas detalhadas na tabela abaixo:")
                Else
                    oWord.FindAndReplacement("<<textoPreambulo>>", "Tratava-se de uma arma conforme as características descritivas detalhadas na tabela abaixo:")
                End If

                If ucFabricanteArma.DESCFABRICANTE.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<fabricante>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<fabricante>>", ucFabricanteArma.DESCFABRICANTE.ToUpper)
                End If

                If ucCalibre.DESCARMA.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<tipodearma>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<tipodearma>>", ucCalibre.DESCARMA.ToString.ToUpper)
                End If

                If txtSerial.Text.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<serial>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<serial>>", txtSerial.Text)
                End If


                If ucCalibre.DESCCALIBRE.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<calibre>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<calibre>>", ucCalibre.DESCCALIBRE)
                End If


                If cmbMuniciamento.Text.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<municiamento>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<municiamento>>", cmbMuniciamento.Text)
                End If
                If txtQteCanos.Value = 1 Then
                    oWord.FindAndReplacement("<<cano>>", "01 (um)")
                Else
                    oWord.FindAndReplacement("<<cano>>", generica.formataNumeroMaterial(txtQteCanos.Value) & " (" & generica.NumeroToExtenso(txtQteCanos.Value) & ")")
                End If


                If cmbAlma.Text.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<alma>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<alma>>", cmbAlma.Text)
                End If
                If cmbFuncionamento.Text.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<funcionamento>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<funcionamento>>", cmbFuncionamento.Text)
                End If
                If txtModelo.Text.Equals(String.Empty) Then
                    oWord.FindAndReplacement("<<modelo>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<modelo>>", txtModelo.Text)
                End If
                If txtCapacidade.Value = 1 Then
                    If ehPoleveira Then
                        oWord.FindAndReplacement("<<capacidade>>", "01(uma) munição")
                    Else
                        oWord.FindAndReplacement("<<capacidade>>", "01(uma)")
                    End If

                Else
                    If txtCapacidade.Value = 2 Then
                        If ehPoleveira Then
                            oWord.FindAndReplacement("<<capacidade>>", "02(duas) munições")
                        Else
                            oWord.FindAndReplacement("<<capacidade>>", "02(duas)")
                        End If

                    Else
                        If txtCapacidade.Value.ToString.Length = 1 Then

                            oWord.FindAndReplacement("<<capacidade>>", "0" & txtCapacidade.Value & "(" & generica.NumeroToExtenso(txtCapacidade.Value) & ") munições")

                        Else
                            oWord.FindAndReplacement("<<capacidade>>", txtCapacidade.Value & "(" & generica.NumeroToExtenso(txtCapacidade.Value) & ") munições")
                        End If
                    End If

                End If

                'If txtCano.Value = 0 Then
                '    oWord.FindAndReplacement("<<medidaCano>>", txtCano.Value & " (zero) centímetros")

                'ElseIf txtCano.Value = 1 Then
                '    oWord.FindAndReplacement("<<medidaCano>>", "01  (um) centímetro")
                'Else
                '    oWord.FindAndReplacement("<<medidaCano>>", generica.formataNumero(txtCano.Value) & " (" & generica.NumeroToExtenso(txtCano.Value) & ") centímetros")
                'End If

                Dim medidaCano As New StringBuilder
                If txtCano.Text.Equals(0) Then
                    medidaCano.Append(txtCano.Text.Substring(0, txtCano.Text.Length - 1))
                Else
                    medidaCano.Append(txtCano.Text).Append(" ").Append(cmbUnidade.Text)
                End If
                oWord.FindAndReplacement("<<medidaCano>>", medidaCano.ToString)

                If cmbEstado.Text.Equals(String.Empty) Then

                    oWord.FindAndReplacement("<<estado>>", "Não informado")
                Else
                    oWord.FindAndReplacement("<<estado>>", cmbEstado.Text.ToUpper)
                End If

                Dim textoMunicao As New StringBuilder
                Dim deflagrada As New StringBuilder
                Dim s As String = Nothing

                If txtqtdeMunicao.Value > 1 Then
                    s = "s"
                End If

                If chkIntactas.Checked Then
                    deflagrada.Append(", intacta").Append(s).Append(" e não deflagrada").Append(s).Append(".")
                Else
                    deflagrada.Append(", percutida").Append(s).Append(" e deflagrada").Append(s).Append(".")
                End If

                If rdAcompanhamSim.Checked Then
                    If CType(txtqtdeMunicao.Value, Integer) = 1 Then

                        textoMunicao.Append(" * ").Append(generica.formataNumeroMaterial(txtqtdeMunicao.Value)).Append(" (").Append("uma").Append(") ").Append("munição calibre ").Append(ucCalibreMunicao.DESC_CALIBRE).Append(", fabricante ").Append(ucFabricanteMunicao.DESCFABRICANTE).Append(deflagrada)
                    ElseIf CType(txtqtdeMunicao.Value, Integer) = 2 Then
                        textoMunicao.Append(" * ").Append(generica.formataNumeroMaterial(txtqtdeMunicao.Value)).Append(" (").Append("duas").Append(") ").Append("munições calibre ").Append(ucCalibreMunicao.DESC_CALIBRE).Append(", fabricante ").Append(ucFabricanteMunicao.DESCFABRICANTE).Append(deflagrada)
                    Else
                        textoMunicao.Append(" * ").Append(generica.formataNumeroMaterial(txtqtdeMunicao.Value)).Append(" (").Append(generica.NumeroToExtenso(txtqtdeMunicao.Value)).Append(") ").Append("munições calibre ").Append(ucCalibreMunicao.DESC_CALIBRE).Append(", fabricante ").Append(ucFabricanteMunicao.DESCFABRICANTE).Append(".")
                    End If

                    oWord.FindAndReplacement("<<municao>>", textoMunicao.ToString)
                Else
                    oWord.FindAndReplacement("<<municao>>", "")
                End If

                If rdEficienteSim.Checked Then
                    oWord.FindAndReplacement("<<textoEficiente>>", "Com a arma foram efetuados disparos verificando o examinador que a mesma")
                    oWord.FindAndReplacement("<<eficiente>>", String.Empty)
                Else
                    oWord.FindAndReplacement("<<textoEficiente>>", "Com a arma foram realizadas tentativas de disparos verificando o examinador que a mesma")
                    oWord.FindAndReplacement("<<eficiente>>", " não")
                End If

                Dim acondicionado As New StringBuilder

                If cmbInvolucro.Text.Equals("Sem invólucro. Apenas entrega da arma juntamente com o laudo") Then
                    acondicionado.Append("Com o laudo devolve-se a arma submetida a exames")
                    oWord.FindAndReplacement("<<acondicionado>>", acondicionado.ToString)
                Else
                    acondicionado.Append("Com o laudo devolve-se a arma submetida a exames acondicionada em ")

                    If cmbInvolucro.Text.Equals("invólucro de segurança") Then
                        oWord.FindAndReplacement("<<acondicionado>>", acondicionado.ToString & cmbInvolucro.Text & " nº " & txtInvolucroIC.Text)
                    Else
                        oWord.FindAndReplacement("<<acondicionado>>", acondicionado.ToString & cmbInvolucro.Text)
                    End If
                End If



                oWord.FindAndReplacement("<<eficiente>>", " não")

                If rdAcompanhamNao.Checked Then
                    oWord.FindAndReplacement("<<acompanham>>", String.Empty)
                Else
                    If rdAcompanhamSim.Checked Then
                        If rdConsSim.Checked Then
                            If txtqtdeMunicao.Value > 1 Then
                                oWord.FindAndReplacement("<<acompanham>>", " As munições deixam de acompanhar a presente peça pericial, pois foram consumidas durante o exame.")
                            Else
                                oWord.FindAndReplacement("<<acompanham>>", " A munição deixa de acompanhar a presente peça pericial, pois foi consumida durante o exame.")
                            End If
                        Else
                            oWord.FindAndReplacement("<<acompanham>>", " As munições seguem em anexo a esta peça pericial.")
                        End If
                    End If
                End If
                oWord.criaAssinatura(ucPreambulo)
                oWord.Save()
                oWord.Quit()
                oWord = Nothing
                pb.stepBarra(10)

                '-------------------------------------------------------dim----------------------------------------------------------------
                ' ROTINA PARA TRATAR DO ERRO CASO OCORRA INCONSISTÊNCIA NA BASE DE DADOS
                '-----------------------------------------------------------------------------------------------------------------------
            Catch exc As Exception
                generica.encerraProcessosWord()
                generica.gravaErro(exc)
                erroNivel = 2
                Exit Sub
            End Try
        Else
            '----------------------------------------------------------------------------------------------------------------------------
            ' CASO SEJA UM ARQUIVO QUE JÁ SE ENCONTRA CADASTRADO NA BASE DE DADOS
            '----------------------------------------------------------------------------------------------------------------------------
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False)
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " já existe registrado na base de dados.Clique no ícone do WORD para visualizar o laudo.")
            Else
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " não foi encontrado na base de dados.")
            End If
        End If
        MsgBox(mensagem)
    End Sub
    Private Sub habilita(ByVal habilita As Boolean, _
                         Optional ByVal habilitaBarra As Boolean = Nothing, _
                         Optional ByVal habilitaVerWord As Boolean = Nothing, _
                         Optional ByVal habilitaNatureza As Boolean = False)

        ucPreambulo.btnVerWord.Visible = habilitaVerWord
        ucPreambulo.btnGeraLaudo.Enabled = habilita
        ucPreambulo.habilitaCampos(habilita)
        pnlItens.Enabled = habilita
        ucPreambulo.selecionaIdTipoPericia = _id_natureza
        ucPreambulo.pnlNatureza.Enabled = habilitaNatureza
        pnlInvolucro.Visible = habilitaNatureza


        ucPreambulo.selecionaIdTipoPericia = 5

        If _ehArma Then
            ucPreambulo.selecionaIdNatureza = 36
        Else
            MsgBox("Não achei a natuerza")
            ucPreambulo.selecionaIdNatureza = 88
        End If
        pb.Visible = habilitaBarra
        pb.zeraContador()



        If Not IsNothing(habilitaBarra) Then
            pb.Visible = habilitaBarra
            pb.zeraContador()
        End If
    End Sub

    Private Sub btnGerarLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim isOk As Boolean = False
        Try
            If (generica.validaCampos(ucPreambulo)) Then
                geraLaudo()
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub

    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If


        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub

    Private Sub limpaCampos()
        Try
            For Each controle In pnlItens.Controls
                If TypeOf (controle) Is TextBox Then
                    CType(controle, TextBox).Text = String.Empty
                ElseIf TypeOf (controle) Is ComboBox Then
                    CType(controle, ComboBox).SelectedIndex = -1
                End If
            Next

            ucFabricanteArma.cmbFabricante.SelectedIndex = 0
            ucFabricanteMunicao.cmbFabricante.SelectedIndex = -1
            ucCalibreMunicao.cmbCalibre.SelectedIndex = -1
            ucCalibre.cmbCalibre.SelectedIndex = -1
            txtCano.Text = String.Empty
            txtQteCanos.Value = 1
            rdEficienteSim.Checked = True
            rdAcompanhamNao.Checked = True
            rdConsSim.Checked = True
            txtCapacidade.Value = 1
            txtqtdeMunicao.Value = 1
            pb.Visible = False
            pb.zeraContador()
            cmbInvolucro.SelectedIndex = -1
            txtInvolucroIC.Text = String.Empty
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickLimpaCampos
        Try
            ucPreambulo.limparCampos()
            limpaCampos()
            ucPreambulo.populaDados()
            habilita(True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickGeraLaudo
        Try
            For Each controle In pnlItens.Controls
                erro.SetError(controle, String.Empty)
            Next


            'COPIAR ESTE TRECHO
            Dim regBO As New registroBO
            Dim registroVOTemp As New registroVO
            Dim novoRegistro As Integer = 0
            registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

            If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                novoRegistro = regBO.getUltimoRegistro
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                ucPreambulo.getNumeroLaudo = novoRegistro

            ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                Exit Sub
            End If

            'FIM DO TRECHO

            'If (generica.validaCampos(ucPreambulo)) Then
            '    If validaCampos() Then
            '        pb.Visible = True
            '        generica.salvaPreambulo(ucPreambulo)
            '        geraLaudo()
            '        If erroNivel > 0 Then

            '            If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo, armaRelatorio, drogaRelatorio) Then
            '                MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
            '                erroNivel = 0
            '                ucPreambulo.btnLimpaCampos.PerformClick()
            '                limpaCampos()
            '            End If

            '        Else
            '            ucPreambulo.txtDataEntrada.Enabled = False
            '            habilita(False, False, True, False)
            '        End If

            '    End If
            'End If
            If (generica.validaCampos(ucPreambulo)) Then
                habilitaPainelInferior(False)
                exibeInvolucro()
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickVisualizaWord
        Try

            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord("", "", registroGlobal.registroPincipal.NOME_DIRETORIO)
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickNovoLaudo
        Try
            ucPreambulo.limparCampos()
            limpaCampos()
            ucPreambulo.populaDados()
            habilita(True, False, False, False)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Public Sub chamaEventoBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickBuscaLaudo
        Try

            Dim itens_avaliacaoBO As New itens_avaliacaoBO

            ucPreambulo.getIdNatureza = _id_natureza
            ucPreambulo.buscaDadosLaudo(ucPreambulo, Me.MdiParent)
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False, , True, False)

            Else
                habilita(True, False, False, False)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtModelo.TextChanged

    End Sub

    Private Sub Label6_Click(sender As Object, e As EventArgs) Handles Label6.Click

    End Sub

    Private Sub rdAcompanhamSim_CheckedChanged(sender As Object, e As EventArgs) Handles rdAcompanhamSim.CheckedChanged
        If rdAcompanhamSim.Checked Then
            grpDadosMunicao.Visible = True
            grpDadosMunicao.Enabled = True
        End If
    End Sub

    Private Sub rdAcompanhamNao_CheckedChanged(sender As Object, e As EventArgs) Handles rdAcompanhamNao.CheckedChanged
        If rdAcompanhamNao.Checked Then
            grpDadosMunicao.Visible = False
            grpDadosMunicao.Enabled = False
        End If
    End Sub

    Function validaCampos() As Boolean

        'Dim ok As Boolean = False
        'Try
        '    If txtAcond.Text.Equals(String.Empty) Then
        '        erro.SetError(txtAcond, "Informe a forma de acondicionamento da droga.")
        '        Return False
        '    ElseIf txtPeso.Text.Equals(String.Empty) Then
        '        erro.SetError(txtPeso, "Informe o peso total da droga apreendida.")
        '        Return False
        '    ElseIf rbSim.Checked = True Then ' a droga é fracionada
        '        If txtPesoIC.Text.Equals(String.Empty) Then
        '            erro.SetError(txtPesoIC, "Informe a quantidade a ser encaminhada para o IC")
        '            Return False
        '        ElseIf CDbl(txtPeso.Text) < CDbl(txtPesoIC.Text) Then
        '            erro.SetError(txtPesoIC, "A quantidade a ser encaminhada para o IC não pode ser maior que o peso total da droga")
        '            Return False
        '        Else
        '            Return True
        '        End If
        '    Else
        '        ok = True
        '    End If
        'Catch ex As Exception
        '    generica.gravaErro(ex)
        'End Try
        'Return ok


        Dim validou As Boolean = False

        Try
            If cmbInvolucro.Text.ToString.Equals(String.Empty) Then
                validou = False
                erro.SetError(cmbInvolucro, "Campo obrigatório")
                Return False
            Else
                If cmbInvolucro.Text.Equals("invólucro de segurança") And txtInvolucroIC.Text.Equals(String.Empty) Then
                    erro.SetError(txtInvolucroIC, "Campo obrigatório")
                    Return False
                Else
                    erro.SetError(txtInvolucroIC, String.Empty)
                    validou = True
                End If

                erro.SetError(cmbInvolucro, String.Empty)
                validou = True
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

        Return validou
    End Function

    Private Sub habilitaPainelInferior(ByVal habilita As Boolean)
        pnlItens.Enabled = habilita
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        pnlInvolucro.Visible = False
        habilitaPainelInferior(True)
    End Sub

    Private Sub exibeInvolucro()
        Try
            pnlInvolucro.Visible = True
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub cmdOk_Click(sender As Object, e As EventArgs) Handles cmdOk.Click
        'FIM DO TRECHO

        If (generica.validaCampos(ucPreambulo)) Then
            If validaCampos() Then
                pb.Visible = True
                generica.salvaPreambulo(ucPreambulo)
                pnlInvolucro.Visible = False
                geraLaudo()
                If erroNivel > 0 Then

                    If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo, armaRelatorio, drogaRelatorio) Then
                        MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                        erroNivel = 0
                        ucPreambulo.btnLimpaCampos.PerformClick()
                        limpaCampos()
                    End If
                Else
                    ucPreambulo.txtDataEntrada.Enabled = False
                    habilita(False, False, True, False)
                    limpaCampos()
                End If
            End If
        End If
    End Sub

    Private Sub cmbInvolucro_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbInvolucro.SelectedIndexChanged
        If cmbInvolucro.Text.Equals("invólucro de segurança") Then
            txtInvolucroIC.Visible = True
            lbIc.Visible = True
        Else
            txtInvolucroIC.Visible = False
            lbIc.Visible = False
        End If
    End Sub
End Class
